package com.example.springmb2.mapper;

import com.example.springmb2.model.UserInfo;
import org.apache.catalina.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface UserInfoMapper {
//   根据 id 删除集合中的一些元素。foreach实例
    int delIds(@Param("ids") List<Integer> ids);


    // set 标签实例
    public int update2(UserInfo userInfo);

//  trim 和 if 标签 实例
    public int add4(UserInfo userInfo);

    public int add3(UserInfo userInfo);

    //    根据用户id查询到用户信息，以及对应的文章信息
    public UserInfo getUserAndArticleByUid(@Param("id") Integer id);

    // 根据 用户名称，进行模糊匹配查询
    public List<UserInfo> getListByName(@Param("username") String username);

    // 登录功能：实现在用户名 和密码输入正确的情况下，返回对应的对象信息
    public UserInfo isLogin(@Param("username") String username,@Param("password") String password);

    // 获取列表，根据 字段 createtime（创建时间）进行排序
    public List<UserInfo> getOrderList(@Param("order") String order);

    // 根据全名查询用户信息（非模糊查询）
    public UserInfo getUserInfoByName(@Param("username") String username);

    // 我们是根据 id 来获取用户信息嘛，
    // 返回值的结果，肯定就是一个userinfo对象嘛！
    // 至于方法名称，取的名字，要别人看得懂，知道这个方法是来干什么的。
    public UserInfo getUserInfoById(@Param("id") Integer id);
//    public UserInfo findUserInfoById(Integer id); 这种命名格式也是可以的。
    // 使用的时候，二选一，不能混着用。不美观！

    // 添加 修改方法【根据id 修改名称】
    public int update(@Param("id") Integer id,@Param("username") String  username);

    // 删除方法: 根据 ID 删除用户信息
    public int del(@Param("id") Integer id);

    // 插入方法：插入指定内容（对象）
    // 返回受影响的行数。
    public int add(UserInfo userInfo);// 因为添加的是 对象，就不用 @Param 了

    public int add2(UserInfo userInfo);

}
